<?php
/**
 * 配置模型
 * @author 麦当苗儿 <zuojiazi@vip.qq.com>
 */

namespace Admin\Model;

use Think\Model;

class ConfigModel extends Model {
  protected $_validate = array(
    array('name', 'require', '标识不能为空', self::EXISTS_VALIDATE, 'regex', self::MODEL_BOTH),
    array('name', '', '标识已经存在', self::VALUE_VALIDATE, 'unique', self::MODEL_BOTH),
    array('title', 'require', '名称不能为空', self::MUST_VALIDATE , 'regex', self::MODEL_BOTH),
  );

  protected $_auto = array(
    array('name', 'strtoupper', self::MODEL_BOTH, 'function'),
    array('create_time', NOW_TIME, self::MODEL_INSERT),
    array('update_time', NOW_TIME, self::MODEL_BOTH),
    array('status', '1', self::MODEL_BOTH),
  );

  /**
   * 获取配置列表
   * @return array 配置数组
   * @author 麦当苗儿 <zuojiazi@vip.qq.com>
   */
  public function lists(){
    $map    = array('status' => 1);
    $data   = $this->where($map)->field('type,name,value')->select();
    
    $config = array();
    if($data && is_array($data)){
      foreach($data as $value){
        $config[$value['name']] = $this->parse($value['type'], $value['value']);
      }
    }
    return $config;
  }

  /**
   * 根据配置类型解析配置
   * @param  integer $type  配置类型
   * @param  string  $value 配置值
   * @author 麦当苗儿 <zuojiazi@vip.qq.com>
   */
  private function parse($type, $value){
    switch ($type){
      case 3: //解析数组
        $array = preg_split('/[,;\r\n]+/', trim($value, ",;\r\n"));
        if(strpos($value,':')){
          $value  = array();
          foreach($array as $val){
            list($k, $v) = explode(':', $val);
            $value[$k]   = $v;
          }
        }else{
          $value =    $array;
        }
        break;
    }
    return $value;
  }

}
